﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using GameEngine.View.Components;
using MapEngine;

namespace GameEditor.View.Components
{
    public class IMapEditorMenuViewConstants
    {
        public enum ButtonTags
        {
            OK, CANCEL,
        }
        //public const string SAVEBUTTON = "SAVEBUTTON";
        //public const string EXITBUTTON = "EXITBUTTON";
        //public const string NEWLEVELBUTTON = "NEWLEVELBUTTON";
        //public const string EDITLEVELBUTTON = "EDITLEVELBUTTON";
        //public const string NEWTHINGTYPEBUTTON = "NEWTHINGTYPEBUTTON";
        //public const string EDITTHINGTYPEBUTTON = "EDITTHINGTYPEBUTTON";
        //public const string NEWVIEWBUTTON = "NEWVIEWBUTTON";
        //public const string EDITVIEWBUTTON = "EDITVIEWTYPEBUTTON";
        //public const string NEWRESOURCEBUTTON = "NEWRESOURCEBUTTON";
        //public const string EDITRESOURCEBUTTON = "EDITRESOURCETYPEBUTTON";
    }

    public interface IMapEditorMenuView
    {
        Point MapSize
        {
            get;
            set;
        }
        TileType TileType
        {
            get;
            set;
        }
        MapType MapType
        {
            get;
            set;
        }
        bool TerrainDownButtonPressed
        {
            get;
        }
        bool TerrainUpButtonPressed
        {
            get;
        }

        float PerlinFrequency
        {
            get;
            set;
        }
        float PerlinAmplitude
        {
            get;
            set;
        }
        float PerlinPersistence
        {
            get;
            set;
        }
        int PerlinOctaves
        {
            get;
            set;
        }
        int PerlinSeed
        {
            get;
            set;
        }
        Point PerlinOrigin
        {
            get;
            set;
        }

        event Action<object> OnMapGenerateHeights;

        event Action<Point> OnSizeChanged;
        event Action<object> OnMapPropertiesSet;
        event Action<object> OnTerrainUp;
        event Action<object> OnTerrainDown;
    }
}
